package stack;

import java.util.HashMap;
import java.util.LinkedList;
import java.util.Map;

/**
 * Created by fengliejv on 2017/9/16.
 */
public class ValidParentheses20 {
    Map<Character, Character> temp = new HashMap() {
        {
            put(')', '(');
        }

        {
            put('}', '{');
        }

        {
            put(']', '[');
        }
    };

    public boolean isValid(String s) {
        LinkedList<Character> stack = new LinkedList<>();
        for (int i = 0; i < s.length(); i++) {
            Character c = s.charAt(i);
            if (temp.containsKey(c)) {
                if (!stack.isEmpty() && stack.peek().equals(temp.get(c))) {
                    stack.pop();
                } else {
                    return false;
                }
            }else {
                stack.push(c);
            }
        }
        return stack.isEmpty();
    }


//    public boolean isValid(String s) {
//        char[] chars = s.toCharArray();
//        Stack<Character> stack = new Stack<Character>();
//        for (char ch:chars){
//            char br = getbracket(ch);
//            if(br==' '){
//                stack.push(ch);
//            }else {
//                if(stack.empty()){
//                    return false;
//                }
//                if(stack.peek()!=br){
//                    return false;
//                } else {
//                    stack.pop();
//                }
//            }
//        }
//        if(stack.empty()){
//            return true;
//        }
//        return false;
//    }

//    public char getbracket(char ch) {
//        if (ch == ')') {
//            return '(';
//        }
//        if (ch == ']') {
//            return '[';
//        }
//        if (ch == '}') {
//            return '{';
//        }
//        return ' ';
//    }

}
